﻿using System;
using GameFramework.common;
using GameFramework.configs;
using GameFramework.net;
using GameFramework.scripts;
using GameFramework.timer;
using Resources.UI.NetTest;
using UnityEngine;
using UnityEngine.PlayerLoop;

namespace Game
{
    
    public class Main:MonoSingleton<Main>
    {
        [SerializeField]
        public GameObject[] preLoadObj;
        
        private void Start()
        {
            NullRefChecker.Validate(this);
            //加载数据
            AllData.Instance.load();
            //加载预制件
            initPreLoadObj();
            //先实例化预加载对象
            //加载配置文件
            // LocalConfig.Instance.loadConfig("Assets/AdressableResource/local_config/local_config.yaml");
            //资源检查(远程更新等等)
            
            //==============加载各种脚本=============
            //1.纯单例脚本进行初始化
            //加载属性脚本
            // PropertyCalScriptManager.Instance.loadScripts();
            //加载通用（各个功能的逻辑脚本）脚本
            //加载消息类型和消息处理脚本
            // MsgManager.Instance.loadMsgTypes_MsgScripts_MsgSerializers();
            
            //2.Scriptable 单例脚本加载(一般是各种配置，这步也可能最先调用，也可能是懒加载)
            AllData.Instance.gameInited = true;
        }

        private void initPreLoadObj()
        {
            if (preLoadObj.Length == 0)
            {
                return;
            }

            foreach (GameObject o in preLoadObj)
            {
                Instantiate(o);
            }
        }
    }
}